package com.tedu.api.list;

import org.junit.Test;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

/**
 * Set集合是Collection集合子接口
 * Set集合接口：无序、无下标、元素不可重复【唯一性】
 * Set集合方法与Collection集和方法【使用一致】
 * add()    remove()   contains()    size()   clear()
 * 使用：Iterator迭代器遍历
 * Set集合---接口---无法创建对象---实现类：
 * HashSet：由哈希算法实现，不保证元素顺序，不允许元素重复，可以存null
 * LinkedHashset：【方法HashSet一致】，由哈希算法实现，保持元素顺序
 *                   不允许元素重复，可以存null
 * TreeSet【算法：红黑树】：不可以村null，按照元素自然顺序或者指定比较器进行元素存档
 * ，不允许元素重复
 */
public class SetAPI {
@Test
    public void testSet() {
    //Set集合与HashSet方法完全一致
    Set<String> set = new HashSet<>();
    set.add("蒸鹿尾儿");
    set.add("蒸饺子");
    set.add("烧花鸭");
    set.add("蒸包子");
    set.add("烧花鸭");
    set.add(null);
    System.out.println("Set集合：" + set);
    boolean b = set.contains("烧花鸭");
    System.out.println("判断Set集合是否存在【烧花鸭】元素：" + b);
    System.out.println("判断集合长度：" + set.size());
    //Iterator遍历    set   集合元素
    //1.通过set集合调用iterator() 获取迭代器实例：Iterator
    Iterator<String> set1 = set.iterator();
    //2.Iterator遵循：问、取、删    删掉：”蒸饺子“元素
    while(set1.hasNext()){//问：set集合有没有元素--有：true
        String str=set1.next();  //取：set集合元素
        //  null   引用类型默认值    不是字符串
        //  判断明确的值   必须   ==
        //  判断对象    使用“字符串”.equals(str)   实值
        //                 obj.equals(add)      地址值
        if (str==null){//如果”蒸饺子“等于”蒸饺子“元素
            set1.remove();//删
        }
        if ("蒸饺子".equals(str)){  //如果”蒸饺子“等于”蒸饺子“元素
            set1.remove();//删


        }



    }
    System.out.println("集合显示："+set);
}
}
